home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / mail / sendmail.8.8.4.tar.gz / sendmail.8.8.4.tar / sendmail-8.8.4 / contrib / oldbind.compat.c < prev    next >
C/C++ Source or Header  |  1993-08-26  |  1KB  |  80 lines

  1. /*
  2. **  OLDBIND.COMPAT.C
  3. **
  4. **    Very old systems do not have res_query(), res_querydomain() or
  5. **    res_search(), so emulate them here.
  6. **
  7. **    You really ought to be upgrading to a newer version of BIND
  8. **    (4.8.2 or later) rather than be using this.
  9. **
  10. **    J.R. Oldroyd <jr@inset.com>
  11. */
  12.  
  13. #include <sys/types.h>
  14. #include <netinet/in.h>
  15. #include <arpa/nameser.h>
  16. #include <resolv.h>
  17.  
  18. typedef union
  19. {
  20.     HEADER    qb1;
  21.     char    qb2[PACKETSZ];
  22. } querybuf;
  23.  
  24. res_query(dname, class, type, data, datalen)
  25.     char *        dname;
  26.     int        class;
  27.     int         type;
  28.     char *        data;
  29.     int        datalen;
  30. {
  31.     int        n;
  32.     querybuf    buf;
  33.  
  34.     n = res_mkquery(QUERY, dname, class, type, (char *) NULL, 0,
  35.         NULL, (char *) &buf, sizeof buf);
  36.     n = res_send((char *)&buf, n, data, datalen);
  37.  
  38.     return n;
  39. }
  40.  
  41. res_querydomain(host, dname, class, type, data, datalen)
  42.     char *        host;
  43.     char *        dname;
  44.     int        class;
  45.     int        type;
  46.     char *        data;
  47.     int        datalen;
  48. {
  49.     int        n;
  50.     querybuf    buf;
  51.     char        dbuf[256];
  52.  
  53.     strcpy(dbuf, host);
  54.     if (dbuf[strlen(dbuf)-1] != '.')
  55.         strcat(dbuf, ".");
  56.     strcat(dbuf, dname);
  57.     n = res_mkquery(QUERY, dbuf, class, type, (char *) NULL, 0,
  58.         NULL, (char *)&buf, sizeof buf);
  59.     n = res_send((char *) &buf, n, data, datalen);
  60.  
  61.     return n;
  62. }
  63.  
  64. res_search(dname, class, type, data, datalen)
  65.     char *        dname;
  66.     int        class;
  67.     int        type;
  68.     char *        data;
  69.     int        datalen;
  70. {
  71.     int        n;
  72.     querybuf    buf;
  73.  
  74.     n = res_mkquery(QUERY, dname, class, type, (char *)NULL, 0,
  75.         NULL, (char *) &buf, sizeof buf);
  76.     n = res_send((char *) &buf, n, data, datalen);
  77.  
  78.     return n;
  79. }
  80.